package br.com.harley.torneio.business;

import java.util.List;

import javax.inject.Inject;

import br.com.harley.torneio.domain.BasePojo;
import br.com.harley.torneio.persistence.BaseDAO;
import br.com.harley.torneio.util.MensagemUtil;
import br.gov.frameworkdemoiselle.stereotype.BusinessController;
import br.gov.frameworkdemoiselle.template.DelegateCrud;
import br.gov.frameworkdemoiselle.util.ResourceBundle;

@BusinessController
public abstract class BaseBC<T, I, C> extends DelegateCrud<T, I, BaseDAO<T, I>> implements IBaseBC {

	private static final long serialVersionUID = 1L;

	@Inject
	protected MensagemUtil mensagemUtil;

	@Inject
	protected ResourceBundle bundle;

	public boolean existeEntidadeComMesmoAtributo(BasePojo pojo, String field, String value) {
		boolean retorno = false;
		List<BasePojo> pojosCadastrados = (List<BasePojo>) getDelegate().findByField(field, value);
		if (!pojosCadastrados.isEmpty()) {
			BasePojo pojoCadastrado = pojosCadastrados.get(0);
			if (pojoCadastrado.getId() == null || !pojoCadastrado.getId().equals(pojo.getId())) {
				// existe usuario com mesmo ATRIBUTO e este usuário não é ele
				// mesmo (caso de atualização)
				retorno = true;
			}
		}
		return retorno;
	}

	public void setMensagemUtil(MensagemUtil mensagemUtil) {
		this.mensagemUtil = mensagemUtil;
	}

	public void setBundle(ResourceBundle bundle) {
		this.bundle = bundle;
	}
}
